package com.itcam.phaseii.date_;


import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * 第三代日期类
 *  对于前两代的分析：
 *      1.第一代再引入Calender类的时候被弃用了
 *      2.第二代存在很多问题，例如：
 *                          （1）.可变性：日期时间的类应该是不可变的
 *                          （2）.偏移性：Date中的年份是从1900开始的，而月份是从0开始的
 *                          （3）.格式化：Calender类没有格式化的方法
 *                          （4）.安全性：线程不安全
 */

public class LocalDate_ {
    public static void main(String[] args) {
        // 1. 使用now()返回表示当前日期时间的对象
        LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
        System.out.println(ldt);

        // 2. 使用DateTimeFormatter 对象来进行格式化
        // 创建DateTimeFormatter 对象
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = dateTimeFormatter.format(ldt);
        System.out.println("格式化的日期 = " + format);

        System.out.println("年=" + ldt.getYear());
        System.out.println("月=" + ldt.getMonth());
        System.out.println("月=" + ldt.getMonthValue());
        System.out.println("日=" + ldt.getDayOfMonth());
        System.out.println("时=" + ldt.getHour());
        System.out.println("分=" + ldt.getMinute());
        System.out.println("秒=" + ldt.getSecond());

        LocalDate now1 = LocalDate.now(); //可以获取年月日
        LocalTime now2 = LocalTime.now();//获取到时分秒

        // 提供plus和minus方法可以对当前时间进行加或者减
        // 看看272天后，是什么时候把年月日-时分秒
        LocalDateTime localDateTime1 = ldt.plusDays(272);
        System.out.println("272天后 = " + dateTimeFormatter.format(localDateTime1));

        LocalDateTime localDateTime2 = ldt.minusDays(365);
        System.out.println("365天前日期 = " + dateTimeFormatter.format(localDateTime2));
    }
}
